# 开发一个坐标计算工具， A表示向左移动，D表示向右移动，W表示向上移动，S表示向下移动。
# 从（0,0）点开始移动，从输入字符串里面读取一些坐标，并将最终输入结果输出到输出文件里面。
# 输入：
# 合法坐标为A(或者D或者W或者S) + 数字（两位以内）
# 坐标之间以;分隔。
# A10;S20;W10;D30;X;A1A;B10A11;;A10;
# 起点（0,0）
# +   A10   =  （-10,0）
# +   S20   =  (-10,-20)
# +   W10  =  (-10,-10)
# +   D30  =  (20,-10)
# +   x    =  无效
# +   A1A   =  无效
# +   B10A11   =  无效
# +  一个空 不影响
# +   A10  =  (10,-10)
# 结果 （10， -10）
# 注意请处理多组输入输出

import re

class coordinate:
    def __init__(self):
        self.x = 0
        self.y = 0

    def switch(self):
        origin = input("请以W,A,S,D加两位以下的数字来移动坐标，多次步骤以；隔开\n")
        # origin = "A10;S20;W10;D30;X;A1A;B10A11;;A10"
        process = list()
        t = origin.split(';')
        for i in t:
            result = re.findall(r'^[W|A|S|D]\d{1,2}$',i)
            if result != []:
                process.append(result[0])
        return process

    def move(self,lst:list):
        for i in lst:
            if i[0] == 'A':
                self.x -= int(i[1:])
            elif i[0] == 'W':
                self.y += int(i[1:])
            elif i[0] == 'S':
                self.y -= int(i[1:])
            else:
                self.x += int(i[1:])

    def record(self):
        """
        有个建议，最好相对路径保存哈，这样更通用一些。
        """
        with open('C:/Users/00000/Desktop/homework4/result.txt','a') as f:
            f.write(str((self.x, self.y)))

if __name__ == "__main__":
    a = coordinate()
    t = a.switch()
    if t != []:
        a.move(t)
        a.record()
    else:
        print('输入有误！')


